<?
	/* Se asegura que el archivo es incluido por el index */
		defined( 'LOAD_MODULE_ACTION' ) or die( 'No esta permitido el acceso directo a ' . __FILE__ );
	/* Cuando se hace el include del archivo automaticamente crea un objeto y lo guarda en una variable temporal */
		$this->oTmpObject = new Producto_turistico_lst( $this );

	class Producto_turistico_lst extends Lst
	{
	function Producto_turistico_lst( &$oModule )
		{
			$this->Lst( $oModule );
		}

	function setLevel()
	{
		switch ( $this->getOptionView() )
		{
			case 'E':
				$this->aShowColumns = array( 'Nombre', 'Depende' );
				break;
			case 'H':
			case 'T':
				$this->aShowColumns = array( 'Nombre' );
				break;
			case 'L':
				$this->aShowColumns = array( 'Depende', 'Nombre', 'Servicios', 'Atractivos', 'Agencias', 'Actividades' );
				break;
		}
	}
	function initialize()
	{
		$this->oFiltro = $this->oModule->loadClass( 'Producto_turistico_frm' );
		$this->aFields = array_merge ( (array)$this->aFields,  (array)$this->oFiltro->getFieldArray() );
		
		$this->setTitle ( "Productos Turisticos" );
		$this->setSummary( "Esta tabla contiene el listado de Productos_Turisticos" );
		$this->addColumn( 'Nombre' , 'cdProducto');
		$this->addColumn( 'Descripcion', 'cDescripcion' );
		$this->addColumn( 'Fuente', 'cFuente' );
		$this->addColumn( 'Depende', '', 'ncProductoPadre');
		$this->addColumn( 'Servicios' );
		$this->addColumn( 'Agencias' );
		$this->addColumn( 'Atractivos' );
		$this->addColumn( 'Actividades' );
		$this->setColumnAction( 'Nombre', VER_PRODUCTO_TURISTICO , 'ncProducto' );
		$this->setColumnAction( 'Depende', VER_PRODUCTO_TURISTICO , 'ncProducto:ncProductoPadre' );
	}
	function makeColumn ( $aRow, $cField )
		{
			switch( $cField )
			{
				case 'KeyTree':
				case 'KeyLookUp':
					$cReturn = $aRow['ncProducto'];
					break;
				case 'DescriptionLookUp':
					$cReturn =  $aRow['cdMenu'] ;
					break;
				case 'Ruta':
					$cReturn = $this->obtenerRuta($aRow['ncProducto']) ;
					break;
				case 'Depende':
					if ( $aRow['ncProductoPadre'] )
					{
						$cSql = "SELECT cdProducto FROM gtProductoTuristico WHERE ncProducto = " . $aRow['ncProductoPadre'];
						$cReturn = $this->oDatabase->getData($cSql) ;
					}
					break;
				case 'Servicios':
					$cSql = "SELECT count(*) FROM gtProductoEstablecimiento WHERE ncProducto = " . $aRow['ncProducto'];
					$cReturn = $this->oDatabase->getData($cSql) ;
					break;
				case 'Agencias':
					$cSql = "SELECT count(*) FROM gtProductoAgencia WHERE ncProducto = " . $aRow['ncProducto'];
					$cReturn = $this->oDatabase->getData($cSql) ;
					break;
				case 'Atractivos':
					$cSql = "SELECT count(*) FROM gtProductoAtractivo WHERE ncProducto = " . $aRow['ncProducto'];
					$cReturn = $this->oDatabase->getData($cSql) ;					break;
				case 'Actividades':
					$cSql = "SELECT count(*) FROM gtProductoActividad WHERE ncProducto = " . $aRow['ncProducto'];
					$cReturn = $this->oDatabase->getData($cSql) ;					break;
				default:
					return false;
				break;
			}
			return $cReturn;
		}
	function obtenerRuta( $ncProducto )
		{
			for ( $cReturn  = "" ; $ncProducto != '' ; $ncProducto = $ncProductoPadre )
			{
				$cSql = "SELECT ncProducto, ncProductoPadre, cdProducto, cDescripcion, cFuente  FROM gtProductoTuristico  WHERE ncProducto = $ncProducto";
				list ( $ncProducto, $ncProductoPadre, $cdProducto ) =  $this->oDatabase->getArray ( $cSql ) ;
				if ( $cdProducto ) $cReturn = extractLanguage( $cdProducto , 'es') . " > " . $cReturn ;
			}
			return $cReturn;
		}
	function query()
		{
			// Arma el Query
				$cSql = "SELECT * FROM gtProductoTuristico AS PTu";
			// Arma el Filtro de la Consulta
				$this->oWhere->addArray ( $this->oFiltro->getFilterdArray('PTu') );
				if ( $this->getTreeKey() ) 
					$this->oWhere->addExpression ( 'PTu.ncProductoPadre', 'ncProductoPadre = ' . $this->getTreeKey() );
				elseif ( $this->isTree() )
					$this->oWhere->addNull( 'PTu.ncProductoPadre' );
				return $cSql . $this->oWhere->make();
		}
	function makeListActions()
		{
			$cParametroRegistro =  $this->getFieldString();
			$this->addListAction ( AGREGAR_PRODUCTO_TURISTICO, $cParametroRegistro, 'I', VENTANA_SECUNDARIA  );
		}
	function makeRowActions( $aRow )
		{
			$cParametroRegistro = "ncProducto=" . $aRow["ncProducto"];
			$this->addRowAction ( MODIFICAR_PRODUCTO_TURISTICO, $cParametroRegistro );
			$this->addRowAction ( ELIMINAR_PRODUCTO_TURISTICO ,  $cParametroRegistro );
		}
	function makeComplex ()
		{
			$oLst = $this->oModule->loadClass ( "producto_establecimiento_lst" );
			$oLst->aFields['ncProduto'] = $this->aFields['ncProduto'];
			$oLst->setNoPaging();
			$oLst->makeDir();
			$oLst = $this->oModule->loadClass ( "producto_atractivo_lst" );
			$oLst->aFields['ncProduto'] = $this->aFields['ncProduto'];
			$oLst->setNoPaging();
			$oLst->makeDir();
		}
	}
?>